Pandas DataFrame yaratish san'atini o'zlashtiring. Ushbu qo'llanma global ma'lumotlar mutaxassislari uchun lug'atlardan, ro'yxatlardan, NumPy massivlaridan va boshqalardan DataFramelarni boshlang'ich holatga keltirishni qamrab oladi.
Pandas DataFrame yaratilishi: Ma'lumotlar tuzilmasini boshlang'ich holatga keltirishga chuqur nazar
Python bilan ma'lumotlarni boshqarish dunyosiga xush kelibsiz! Deyarli har bir ma'lumotlarni tahlil qilish vazifasining asosida Pandas kutubxonasi va uning asosiy qismi DataFrame yotadi. DataFrame-ni Python muhitingizda yashaydigan elektron jadvalning yoki ma'lumotlar bazasi jadvalining aqlli, kuchli va moslashuvchan versiyasi deb tasavvur qiling. Ma'lumotlarni tozalash, o'zgartirish, tahlil qilish va vizualizatsiya qilishning asosiy vositasi. Lekin siz bu ma'lumotlar sehrini bajarishdan oldin, avval DataFrame-ni yaratish san'atini o'zlashtirishingiz kerak. Ushbu asosiy ma'lumotlar tuzilmasini qanday boshlang'ich holatga keltirishingiz butun tahlilingiz uchun sahna yaratishi mumkin.
Ushbu keng qamrovli qo'llanma ma'lumotlar tahlilchilari, olimlar va muhandislar bo'lishga intilayotgan va amaliyot bilan shug'ullanayotgan global auditoriyaga mo'ljallangan. Biz Pandas DataFramelarni noldan yaratishning eng keng tarqalgan va kuchli usullarini ko'rib chiqamiz. Ma'lumotlaringiz lug'atda, ro'yxatda, NumPy massivida yoki boshqa formatda bo'lsin, ushbu maqola sizga DataFramelaringizni ishonch va samaradorlik bilan boshlang'ich holatga keltirish uchun bilim va amaliy misollarni taqdim etadi. Keling, asosimizni quraylik.
Pandas DataFrame aynan nima?
Qurilishni boshlashdan oldin, nima qurayotganimizni aniqlashtiraylik. Pandas DataFrame - bu ikki o'lchovli, o'lchamli, o'zgaruvchan va potentsial ravishda geterogen jadval ma'lumotlar tuzilmasi. Keling, buni buzaylik:
- Ikki o'lchovli: U elektron jadval singari qatorlar va ustunlarga ega.
- O'lcham-o'zgaruvchan: DataFrame yaratilgandan so'ng qatorlar va ustunlarni qo'shishingiz yoki olib tashlashingiz mumkin.
- Geterogen: Ustunlar har xil ma'lumotlar turlariga ega bo'lishi mumkin. Misol uchun, bir ustun raqamlarni (butun sonlar yoki suzuvchi nuqtalar) o'z ichiga olishi mumkin, boshqasi matnni (satrlar) o'z ichiga olishi mumkin, uchinchisi esa sanalar yoki mantiqiy qiymatlarni (True/False) o'z ichiga olishi mumkin.
DataFrame uchta asosiy komponentga ega:
- Ma'lumotlar: Tuzilma ichida joylashgan, qatorlar va ustunlarda tashkil etilgan haqiqiy qiymatlar.
- Indeks: Qatorlar uchun yorliqlar. Agar siz indeks bermasangiz, Pandas 0 dan boshlab standart indeksni yaratadi. Indeks ma'lumotlarga kirish va moslashtirishning kuchli usulini taqdim etadi.
- Ustunlar: Ustunlar uchun yorliqlar. Ular DataFrame ichidagi ma'lum bir ma'lumotlar seriyasiga kirish uchun juda muhimdir.
Ushbu tuzilmani tushunish DataFramelarni samarali yaratish va boshqarishni tushunishning kalitidir.
Asos: Pandas-ni import qilish
Avvalo. Pandas-dan foydalanish uchun siz kutubxonani Python skriptingizga yoki daftaringizga import qilishingiz kerak. Butun dunyo bo'ylab mutaxassislar tomonidan qo'llaniladigan umumiy qabul qilingan konventsiya - uni pd takma nomi bilan import qilishdir. Ushbu oddiy taxallus kodni yanada o'qiladigan va ixcham qiladi.
import pandas as pd
import numpy as np # Ko'pincha Pandas bilan birga ishlatiladi, shuning uchun biz uni ham import qilamiz.
Ushbu bitta qator bilan siz Pandas kutubxonasining to'liq quvvatini ochdingiz. Endi, keling, ushbu qo'llanmaning asosiga o'taylik: DataFramelarni yaratish.
Asosiy yaratish usullari: Oddiydan murakkabgacha
pd.DataFrame() konstruktori juda ko'p qirrali. U ko'plab turli xil kiritishlarni qabul qilishi mumkin. Endi biz eng oddiy holatlardan tortib, yanada ixtisoslashtirilgan holatlarga o'tib, eng muhim usullarni ko'rib chiqamiz.
1. Ro'yxatlar yoki massivlar lug'atidan DataFrame yaratish
Bu, bahsli ravishda, DataFrame yaratishning eng keng tarqalgan va intuitiv usuli hisoblanadi. Siz Python lug'ati bilan boshlaysiz, bunda kalitlar ustun nomlari bo'ladi va qiymatlar har bir ustun uchun ma'lumotlarni o'z ichiga olgan ro'yxatlar (yoki NumPy massivlari yoki Pandas seriyalari) bo'ladi.
U qanday ishlaydi: Pandas har bir lug'at kalitini ustun sarlavhasiga va qiymatlarning har bir ro'yxatini ushbu ustunning qatorlariga xaritalaydi. Bu yerda muhim talab shuki, barcha ro'yxatlar bir xil uzunlikka ega bo'lishi kerak, chunki har bir ro'yxat ma'lumotlarning to'liq ustunini ifodalaydi.
Misol:
Keling, dunyo bo'ylab turli shaharlar haqidagi ma'lumotlarni o'z ichiga olgan DataFrame yarataylik.
# Ustun bo'yicha tashkil etilgan ma'lumotlar
city_data = {
'City': ['Tokio', 'Deli', 'Shanxay', 'San-Paulu', 'Mumbay'],
'Country': ['Yaponiya', 'Hindiston', 'Xitoy', 'Braziliya', 'Hindiston'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
# DataFrame-ni yarating
df_from_dict = pd.DataFrame(city_data)
print(df_from_dict)
Chiqish:
City Country Population_Millions Is_Coastal
0 Tokio Yaponiya 37.3 True
1 Deli Hindiston 32.0 False
2 Shanxay Xitoy 28.5 True
3 San-Paulu Braziliya 22.4 False
4 Mumbay Hindiston 20.9 True
Asosiy xulosa: Ushbu usul ma'lumotlaringiz tabiiy ravishda xususiyat yoki toifaga ko'ra tashkil etilganida juda mos keladi. U toza, o'qiladigan va lug'atingizning tuzilishini jadval formatiga to'g'ridan-to'g'ri tarjima qiladi.
2. Lug'atlar ro'yxatidan DataFrame yaratish
Alternativ va shuningdek, kuchli usul - har bir elementi lug'at bo'lgan ro'yxatdan foydalanishdir. Ushbu tuzilishda har bir lug'at bitta qatorni ifodalaydi va uning kalitlari ushbu qatorning ma'lumotlari uchun ustun nomlarini ifodalaydi.
U qanday ishlaydi: Pandas ro'yxat bo'ylab takrorlanadi. Har bir lug'at uchun u yangi qator yaratadi. Lug'at kalitlari ustunlarni aniqlash uchun ishlatiladi. Ushbu usul juda moslashuvchan, chunki agar lug'atda kalit yo'q bo'lsa, Pandas avtomatik ravishda tegishli qatordagi ushbu katakchani NaN (Raqam emas) bilan to'ldiradi, bu Pandas-da yo'qolgan ma'lumotlar uchun standart belgisidir.
Misol:
Keling, bir xil shahar ma'lumotlarini ifodalaymiz, lekin bu safar yozuvlar ro'yxati sifatida tuzilgan.
# Qator (rekord) bo'yicha tashkil etilgan ma'lumotlar
records_data = [
{'City': 'Tokio', 'Country': 'Yaponiya', 'Population_Millions': 37.3, 'Is_Coastal': True},
{'City': 'Deli', 'Country': 'Hindiston', 'Population_Millions': 32.0, 'Is_Coastal': False},
{'City': 'Shanxay', 'Country': 'Xitoy', 'Population_Millions': 28.5},
{'City': 'San-Paulu', 'Country': 'Braziliya', 'Population_Millions': 22.4, 'Is_Coastal': False},
{'City': 'Qohira', 'Country': 'Misr', 'Timezone': 'EET'} # Har xil tuzilishga e'tibor bering
]
# DataFrame-ni yarating
df_from_list_of_dicts = pd.DataFrame(records_data)
print(df_from_list_of_dicts)
Chiqish:
City Country Population_Millions Is_Coastal Timezone
0 Tokio Yaponiya 37.3 True NaN
1 Deli Hindiston 32.0 False NaN
2 Shanxay Xitoy 28.5 NaN NaN
3 San-Paulu Braziliya 22.4 False NaN
4 Qohira Misr NaN NaN EET
Pandas nomuvofiqliklarni qanday oqlagani e'tibor bering. Shanxay uchun 'Is_Coastal' qiymati NaN, chunki u lug'atidan yo'q edi. Qohira uchun yangi 'Timezone' ustuni yaratildi, boshqa barcha shaharlar uchun NaN bilan. Bu uni API-lardan JSON javoblari kabi yarim tuzilgan ma'lumotlar bilan ishlash uchun juda yaxshi tanlov qiladi.
Asosiy xulosa: Ma'lumotlaringiz yozuvlar yoki kuzatuvlar ketma-ketligi sifatida kelganda, ushbu usuldan foydalaning. U yo'qolgan ma'lumotlar va yozuv tuzilishidagi o'zgarishlarni boshqarishda mustahkamdir.
3. NumPy massividan DataFrame yaratish
Ilg'or hisoblash, mashinani o'rganish yoki og'ir sonli operatsiyalarni o'z ichiga olgan har qanday sohada ishlaydiganlar uchun ma'lumotlar ko'pincha NumPy massivlaridan kelib chiqadi. Pandas NumPy ustiga qurilgan bo'lib, ikkalasi o'rtasidagi integratsiyani uzluksiz va juda samarali qiladi.
U qanday ishlaydi: Siz 2D NumPy massivini pd.DataFrame() konstruktoriga o'tkazasiz. Standart bo'yicha, Pandas butun sonli indekslar va ustunlar yaratadi. Biroq, siz index va columns parametrlari yordamida mazmunli yorliqlarni taqdim etishingiz mumkin (va kerak).
Misol:
Keling, vaqt o'tishi bilan sensor o'qishlarini ifodalovchi tasodifiy yaratilgan 5x4 NumPy massividan DataFrame yarataylik.
# Tasodifiy ma'lumotlar bilan 5x4 NumPy massivini yarating
data_np = np.random.rand(5, 4)
# Ustun va indeks yorliqlarini aniqlang
columns = ['Sensor_A', 'Sensor_B', 'Sensor_C', 'Sensor_D']
index = pd.to_datetime(['2023-10-27 10:00', '2023-10-27 10:01', '2023-10-27 10:02', '2023-10-27 10:03', '2023-10-27 10:04'])
# DataFrame-ni yarating
df_from_numpy = pd.DataFrame(data=data_np, index=index, columns=columns)
print(df_from_numpy)
Chiqish (tasodifiy raqamlaringiz farq qiladi):
Sensor_A Sensor_B Sensor_C Sensor_D
2023-10-27 10:00:00 0.123456 0.987654 0.555555 0.111111
2023-10-27 10:01:00 0.234567 0.876543 0.666666 0.222222
2023-10-27 10:02:00 0.345678 0.765432 0.777777 0.333333
2023-10-27 10:03:00 0.456789 0.654321 0.888888 0.444444
2023-10-27 10:04:00 0.567890 0.543210 0.999999 0.555555
Ushbu misolda biz, shuningdek, kuchli xususiyatni ham kiritdik: vaqt seriyasi ma'lumotlari uchun DatetimeIndex-dan foydalanish, bu Pandas-da vaqtga asoslangan tahlil imkoniyatlarining katta qatorini ochadi.
Asosiy xulosa: Bu gomogen sonli ma'lumotlardan DataFrame yaratishning eng xotira samarador usuli. Bu NumPy, Scikit-learn yoki TensorFlow kabi kutubxonalar bilan interfeyslashganda standart tanlovdir.
4. Ro'yxatlar ro'yxatidan DataFrame yaratish
Ushbu usul, NumPy massividan yaratishga kontseptual jihatdan o'xshash, ammo standart Python ro'yxatlaridan foydalanadi. U ichki ro'yxat ma'lumotlar qatorini ifodalaydigan jadval ma'lumotlarini o'z ichiga olgan oddiy usuldir.
U qanday ishlaydi: Siz har bir ichki ro'yxat ma'lumotlar qatorini ifodalaydigan ro'yxatni taqdim etasiz. NumPy massivlarida bo'lgani kabi, aniqlik kiritish uchun ustun nomlarini columns parametri orqali belgilash tavsiya etiladi.
Misol:
# Qatorlar ro'yxati sifatida ma'lumotlar
product_data = [
['P001', 'Laptop', 1200.00, 'Electronics'],
['P002', 'Mouse', 25.50, 'Electronics'],
['P003', 'Desk Chair', 150.75, 'Furniture'],
['P004', 'Keyboard', 75.00, 'Electronics']
]
# Ustun nomlarini aniqlang
column_names = ['ProductID', 'ProductName', 'Price_USD', 'Category']
# DataFrame-ni yarating
df_from_list_of_lists = pd.DataFrame(product_data, columns=column_names)
print(df_from_list_of_lists)
Chiqish:
ProductID ProductName Price_USD Category 0 P001 Laptop 1200.00 Electronics 1 P002 Mouse 25.50 Electronics 2 P003 Desk Chair 150.75 Furniture 3 P004 Keyboard 75.00 Electronics
Asosiy xulosa: Ma'lumotlaringiz mavjud bo'lganda, masalan, sarlavhalarsiz fayl formatidan o'qiyotganda, qatorlar ro'yxati sifatida tuzilgan bo'lsa, bu oddiy va samarali usuldir.
Ilg'or boshlang'ich: DataFrame-ni sozlash
Xom ma'lumotlarni taqdim etishdan tashqari, pd.DataFrame() konstruktori sizning yangi DataFrame-ning tuzilishi va xususiyatlarini yaratilgan paytdan boshlab nazorat qilish uchun bir nechta parametrlarni taqdim etadi.
Indeksni belgilash
Biz allaqachon harakatda `index` parametrini ko'rdik. Indeks DataFrame-ning muhim qismidir, u qatorlar uchun tez qidiruv, ma'lumotlarni hizalash va boshqalar uchun ishlatiladigan yorliqlarni taqdim etadi. Pandas standart raqamli indeksni (0, 1, 2, ...) taqdim etsa-da, mazmunli indeksni o'rnatish ma'lumotlaringiz bilan ishlashni ancha osonlashtirishi mumkin.
Misol: Keling, ro'yxatlar misolimizning lug'atini qayta ishlating, lekin yaratilishda `City` ustunini indeks sifatida o'rnating.
city_data = {
'Country': ['Yaponiya', 'Hindiston', 'Xitoy', 'Braziliya', 'Hindiston'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
city_names = ['Tokio', 'Deli', 'Shanxay', 'San-Paulu', 'Mumbay']
# Maxsus indeks bilan DataFrame yarating
df_with_index = pd.DataFrame(city_data, index=city_names)
print(df_with_index)
Chiqish:
Country Population_Millions Is_Coastal
Tokio Yaponiya 37.3 True
Deli Hindiston 32.0 False
Shanxay Xitoy 28.5 True
San-Paulu Braziliya 22.4 False
Mumbay Hindiston 20.9 True
Endi siz ushbu mazmunli yorliqlardan foydalanib qator ma'lumotlariga kirishingiz mumkin, masalan, df_with_index.loc['Tokio'] bilan.
Ma'lumotlar turlarini boshqarish (`dtype`)
Pandas ma'lumotlar turlarini (masalan, raqamlarni, matnni va mantiqiy qiymatlarni tanib olish) aniqlashda juda yaxshi. Biroq, ba'zida xotira samaradorligini ta'minlash yoki muayyan operatsiyalarni yoqish uchun ustun uchun muayyan ma'lumotlar turini majbur qilishingiz kerak. `dtype` parametri sizga bu boshqaruvni beradi.
Misol: Tasavvur qiling, biz raqamlarga o'xshash, ammo matn (satrlar) sifatida qaralishi kerak bo'lgan mahsulot IDlariga egamiz.
data = {
'ProductID': [101, 102, 103],
'Stock': [50, 75, 0]
}
# 'ProductID' uchun dtype-ni belgilab, DataFrame-ni yarating
df_types = pd.DataFrame(data, dtype={'ProductID': str, 'Stock': 'int32'})
print(df_types.dtypes)
Chiqish:
ProductID object Stock int32 dtype: object
Pandas-da `str` `object` sifatida ifodalanishini unutmang. `dtype`-ni aniq belgilash orqali biz Pandas-ga `ProductID`-ni raqam sifatida qabul qilishiga yo'l qo'ymaymiz, bu noto'g'ri hisob-kitoblarga yoki keyinchalik saralash muammolariga olib kelishi mumkin. `int64` standartidan farqli o'laroq, `int32` kabi yanada aniqroq butun son turlaridan foydalanish ham katta ma'lumotlar to'plamlari bilan sezilarli darajada xotirani tejashi mumkin.
Amaliy ssenariylar va eng yaxshi amaliyotlar
To'g'ri yaratish usulini tanlash ma'lumotlaringizning asl formatiga bog'liq. Mana oddiy qaror qo'llanmasi:
- Ma'lumotlaringiz ustunlarda (masalan, har bir xususiyat uchun bitta ro'yxat)mi? Ro'yxatlar lug'atidan foydalaning. Bu tabiiy mos keladi.
- Ma'lumotlaringiz yozuvlar seriyasimi (masalan, JSON API-dan)? Lug'atlar ro'yxatidan foydalaning. U yozuvlardagi yo'qolgan yoki qo'shimcha maydonlarni boshqarishda ajralib turadi.
- Ma'lumotlaringiz sonli va gridda (masalan, ilmiy hisob-kitobdan)? NumPy massividan foydalaning. Bu ushbu foydalanish holati uchun eng samarali variantdir.
- Ma'lumotlaringiz sarlavhalarsiz oddiy qator-qator jadval formatidami? Ro'yxatlar ro'yxatidan foydalaning va ustun nomlarini alohida taqdim eting.
Oldini olish kerak bo'lgan umumiy xatolar
- Ro'yxatlar lug'atida teng bo'lmagan uzunliklar: Bu keng tarqalgan xatodir. Ro'yxatlar lug'atidan DataFrame yaratishda har bir ro'yxatda bir xil sondagi elementlar bo'lishi kerak. Agar yo'q bo'lsa, Pandas `ValueError`-ni ko'taradi. Yaratishdan oldin har doim ustun ma'lumotlaringiz bir xil uzunlikda ekanligiga ishonch hosil qiling.
- Indeksni e'tiborsiz qoldirish: Ko'pgina holatlarda standart 0-asosli indeksga tayanib ishlash yaxshi, ammo agar ma'lumotlaringiz tabiiy identifikatorga (masalan, Mahsulot IDsi, Foydalanuvchi IDsi yoki muayyan vaqt tamg'asi) ega bo'lsa, uni boshidan indeks sifatida o'rnatish kodni keyinroq soddalashtirishi mumkin.
- Ma'lumotlar turlarini unutish: Pandas turlarni taxmin qilishga ruxsat berish ko'p vaqt ishlaydi, lekin katta ma'lumotlar to'plamlari yoki aralash turlarga ega ustunlar uchun ishlash zarar ko'rishi mumkin. Xotirani tejash va xatolarning oldini olish uchun toifalar, satrlar yoki muayyan sonli turlar sifatida qaralishi kerak bo'lgan ustunlar uchun `dtype`-ni o'rnatishda faol bo'ling.
Boshlang'ichdan tashqari: Fayllardan DataFramelarni yaratish
Ushbu qo'llanma ichki Python ob'ektlaridan DataFramelarni yaratishga qaratilgan bo'lsa-da, haqiqiy dunyo stsenariylarining ko'pchiligida ma'lumotlaringiz tashqi fayldan kelishini bilish juda muhimdir. Pandas bu maqsad uchun quyidagilarni o'z ichiga olgan juda optimallashtirilgan o'quvchi funktsiyalar to'plamini taqdim etadi:
pd.read_csv(): vergul bilan ajratilgan qiymatlar fayllari uchun, ma'lumotlarni import qilishning asosiy vositasi.pd.read_excel(): Microsoft Excel elektron jadvallaridan ma'lumotlarni o'qish uchun.pd.read_json(): JSON fayllaridan yoki satrlaridan ma'lumotlarni o'qish uchun.pd.read_sql(): ma'lumotlar bazasi so'rovining natijalarini to'g'ridan-to'g'ri DataFrame-ga o'qish uchun.pd.read_parquet(): samarali, ustunlarga yo'naltirilgan Parquet fayl formatidan o'qish uchun.
Ushbu funktsiyalar Pandas sayohatingizdagi keyingi mantiqiy qadamdir. Ularni o'zlashtirish deyarli har qanday manbadan ma'lumotlarni kuchli DataFrame tuzilishiga kiritishga imkon beradi.
Xulosa: Ma'lumotlarni boshqarish uchun asoslaringiz
Pandas DataFrame Python-da har qanday jiddiy ma'lumotlar ishi uchun markaziy ma'lumotlar tuzilmasidir. Ko'rib turganimizdek, Pandas ushbu tuzilmalarni turli xil formatlardan boshlang'ich holatga keltirish uchun moslashuvchan va intuitiv vositalar to'plamini taklif etadi. Lug'atlardan, ro'yxatlardan va NumPy massivlaridan DataFrame yaratishni tushunish orqali siz ma'lumotlarni tahlil qilish loyihalaringiz uchun mustahkam poydevor qurdiz.
Asosi ma'lumotlaringizning asl tuzilishiga eng mos keladigan usulni tanlashdir. Bu nafaqat kodingizni toza va o'qiladigan qiladi, balki samaradorroq qiladi. Bu yerdan siz ma'lumotlarni tozalash, o'rganish, o'zgartirish va vizualizatsiya qilishning hayajonli vazifalariga o'tishga tayyorsiz. Baxtli kodlash!